/***********************************************************************
 * Module:  Location.java
 * Author:  Simon
 * Purpose: Defines the Class Location
 ***********************************************************************/

package Modele;

import java.util.*;

import DAO.DAOClient;
import DAO.DAOStation;
import DAO.DAOVelo;

/** Objet définissant les locations */
public class Location {
	/** Identifiant de la location */
	private int idLocation;
	/** Identifiant du client de la location */
	private int idClient;
	/** Identifiant du vélo de la location */
	private int idVelo;
	/** Identifiant de la station de début de la location */
	private int idStationDebut;
	/** Identifiant de la station de fin de la location */
	private int idStationFin;

	/** Date de début du stationnement */
	private Date dateDeDebut;
	/** Date de fin du stationnement */
	private Date dateDeFin;

	/**
	 * Instancie une location
	 * 
	 * @param idClient
	 *            Identifiant du client
	 * @param idVelo
	 *            Identifiant du vélo
	 * @param idStationDebut
	 *            Identifiant de la station de départ
	 * @param idStationFin
	 *            Identifiant de la station d'arrivée
	 * @param dateDeDebut
	 *            Date de début de la location
	 * @param dateDeFin
	 *            Date de fin de la location
	 */
	public Location(int idClient, int idVelo, int idStationDebut,
			int idStationFin, Date dateDeDebut, Date dateDeFin) {
		this.idClient = idClient;
		this.idVelo = idVelo;
		this.idStationDebut = idStationDebut;
		this.idStationFin = idStationFin;
		this.dateDeDebut = dateDeDebut;
		this.dateDeFin = dateDeFin;
	}

	/**
	 * Instancie une location
	 * 
	 * @param idLocation
	 *            Identifiant de la location
	 * @param idClient
	 *            Identifiant du client
	 * @param idVelo
	 *            Identifiant du vélo
	 * @param idStationDebut
	 *            Identifiant de la station de départ
	 * @param idStationFin
	 *            Identifiant de la station d'arrivée
	 * @param dateDeDebut
	 *            Date de début de la location
	 * @param dateDeFin
	 *            Date de fin de la location
	 */
	public Location(int idLocation, int idClient, int idVelo,
			int idStationDebut, int idStationFin, Date dateDeDebut,
			Date dateDeFin) {
		this.idLocation = idLocation;
		this.idClient = idClient;
		this.idVelo = idVelo;
		this.idStationDebut = idStationDebut;
		this.idStationFin = idStationFin;
		this.dateDeDebut = dateDeDebut;
		this.dateDeFin = dateDeFin;
	}

	/**
	 * Renvoie le vélo concerné par la location
	 * 
	 * @return Le vélo
	 */
	public Velo getVelo() {
		return DAOVelo.getVeloById(getIdVelo());
	}

	/**
	 * Renvoie le client concernée par la location
	 * 
	 * @return La station
	 */
	public Client getClient() {
		return DAOClient.getClientById(getIdClient());
	}

	/**
	 * Renvoie l'identifiant de la location
	 * 
	 * @return L'identifiant de la location
	 */
	public int getIdLocation() {
		return idLocation;
	}

	/**
	 * Renvoie l'identifiant du client de la location
	 * 
	 * @return L'identifiant du client de la location
	 */
	public int getIdClient() {
		return idClient;
	}

	/**
	 * Assigne l'identifiant du client de la location
	 * 
	 * @param newIdClient
	 */
	public void setIdClient(int newIdClient) {
		idClient = newIdClient;
	}

	/**
	 * Renvoie l'identifiant du vélo de la location
	 * 
	 * @return L'identifiant du vélo de la location
	 */
	public int getIdVelo() {
		return idVelo;
	}

	/**
	 * Assigne l'identifiant du vélo de la location
	 * 
	 * @param newIdVelo
	 */
	public void setIdVelo(int newIdVelo) {
		idVelo = newIdVelo;
	}

	/**
	 * Renvoie l'identifiant de la sation du début de la location
	 * 
	 * @return L'identifiant de la sation du début de la location
	 */
	public int getIdStationDebut() {
		return idStationDebut;
	}

	/**
	 * Assigne l'identifiant de la sation du début de la location
	 * 
	 * @param newIdStationDebut
	 */
	public void setIdStationDebut(int newIdStationDebut) {
		idStationDebut = newIdStationDebut;
	}

	/**
	 * Renvoie l'identifiant de la sation de fin de la location
	 * 
	 * @return L'identifiant de la sation de fin de la location
	 */
	public int getIdStationFin() {
		return idStationFin;
	}

	/**
	 * Assigne l'identifiant de la sation de fin de la location
	 * 
	 * @param newIdStationFin
	 */
	public void setIdStationFin(int newIdStationFin) {
		idStationFin = newIdStationFin;
	}

	/**
	 * Renvoie la station de fin concernée par le stationnement
	 * 
	 * @return La station
	 */
	public Station getStationFin() {
		return DAOStation.getStationById(getIdStationFin());
	}

	/**
	 * Renvoie la station de début concernée par le stationnement
	 * 
	 * @return La station
	 */
	public Station getStationDebut() {
		return DAOStation.getStationById(getIdStationDebut());
	}

	/**
	 * Renvoie la date de fin de la location
	 * 
	 * @return La date de fin
	 */
	public Date getDateDeFin() {
		return dateDeFin;
	}

	/**
	 * Assigne la date de fin de la location
	 * 
	 * @param newDateDeFin
	 */
	public void setDateDeFin(Date newDateDeFin) {
		dateDeFin = newDateDeFin;
	}

	/**
	 * Renvoie la date de début de la location
	 * 
	 * @return La date de début
	 */
	public Date getDateDeDebut() {
		return dateDeDebut;
	}

	/**
	 * Assigne la date de fin de la location
	 * 
	 * @param newDateDeDebut
	 */
	public void setDateDeDebut(Date newDateDeDebut) {
		dateDeDebut = newDateDeDebut;
	}

}